package main

import "fmt"

func main0501() {
	arr := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
	// 自动推导类型创建数组指针
	//p := &arr
	var p *[10] int
	p = &arr
	//(*p)[1] = 222
	//fmt.Println(*p)
	fmt.Println(len(p))
	for i := 0; i < len(p); i++ {
		fmt.Println(p[i])
	}
}

func main0502() {
	arr := [5] int{1, 2, 3, 4, 5}
	// 指针变量和要存储的数据类型要相同
	// p1和p2在内存中指向相同的地址 但是p1和p2的类型不同 一个是指向整个数组   一个是指向数组的元素
	p1 := &arr
	p2 := &arr[0]
	fmt.Printf("%p\n", p1)
	fmt.Printf("%p\n", p2)

	for i := 0; i < len(p1); i++ {
		fmt.Println(p1[i])
	}
}

func BubbleSort(arr *[10]int) {
	for i := 0; i < len(arr)-1; i++ {
		for j := 0; j < len(arr)-i-1; j++ {
			if arr[j] > arr[j+1] {
				arr[j], arr[j+1] = arr[j+1], arr[j]
			}
		}
	}
}

func main() {
	arr := [10] int{9, 1, 5, 6, 8, 4, 10, 7, 2, 3}
	p := &arr
	BubbleSort(p)
	fmt.Println(arr)
}
